package com.ccys.db.entity;

import com.ccys.db.rely.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.persistence.Column;
import javax.persistence.Table;
import java.util.Date;

/**
* Created by Mybatis Generator on 2023/12/15
*/
@Data
@ApiModel("医生")
@Table(name = "tbl_doctor")
@NoArgsConstructor
@AllArgsConstructor
public class TblDoctor extends BaseEntity {
    @Column(name = "group_id")
    private String groupId;

    @Column(name = "company_id")
    private String companyId;

    @Column(name = "doctor_no")
    private String doctorNo;

    /**
     * 医生类型:1SP ; 2:GP
     */
    @Column(name = "panel_type")
    @ApiModelProperty("医生类型:1SP ; 2:GP")
    private Integer panelType;

    @Column(name = "first_name")
    private String firstName;

    @Column(name = "last_name")
    private String lastName;

    /**
     * 医生当前所在诊所ID
     */
    @Column(name = "current_clinic_id")
    private String currentClinicId;

    private String password;

    private String token;

    private String email;

    private Integer gender;

    @Column(name = "doctor_type")
    private String doctorType;

    /**
     * 医生端工作状态 1 可用     -1 离开(away)
     */
    @Column(name = "job_status")
    @ApiModelProperty("医生端工作状态 1 可用     -1 离开(away)")
    private Integer jobStatus;

    /**
     * 保留
     */
    @Column(name = "job_sub_status")
    @ApiModelProperty("保留")
    private Integer jobSubStatus;

    private String image;

    @Column(name = "signature_image")
    private String signatureImage;

    /**
     * 生日
     */
    @ApiModelProperty("生日")
    private Date dob;

    @Column(name = "doctor_last_visit")
    private Date doctorLastVisit;

    /**
     * 在线状态 0 离线，1 在线
     */
    @Column(name = "online_status")
    @ApiModelProperty("在线状态 0 离线，1 在线")
    private Integer onlineStatus;

    /**
     * 1 可用 0 冻结(历史数据为-1)
     */
    @ApiModelProperty("1 可用 0 冻结(历史数据为-1)")
    private Integer status;

    /**
     * 账号登录状态，密码错误 3 次修改为0，默认 1
     */
    @Column(name = "login_status")
    @ApiModelProperty("账号登录状态，密码错误 3 次修改为0，默认 1")
    private Integer loginStatus;

    /**
     * 密码错误次数
     */
    @Column(name = "failed_password_attempts")
    @ApiModelProperty("密码错误次数")
    private Integer failedPasswordAttempts;

    /**
     * 密码错误 3 次锁定时间
     */
    @Column(name = "locked_on")
    @ApiModelProperty("密码错误 3 次锁定时间")
    private Date lockedOn;

    /**
     * 最后一次修改密码时间
     */
    @Column(name = "last_change_password")
    @ApiModelProperty("最后一次修改密码时间")
    private Date lastChangePassword;

    @Column(name = "twilio_name")
    private String twilioName;

    /**
     * 保留
     */
    @Column(name = "doctor_request_update_profile")
    @ApiModelProperty("保留")
    private Boolean doctorRequestUpdateProfile;

    /**
     * 保留
     */
    @Column(name = "doctor_request_update_profile_on")
    @ApiModelProperty("保留")
    private Date doctorRequestUpdateProfileOn;


    private String address;

    /**
     * 1:full time;2:part time;3:locum
     */
    @Column(name = "job_type")
    @ApiModelProperty("1:full time;2:part time;3:locum")
    private Integer jobType;

    @Column(name = "license_no")
    private String licenseNo;

    /**
     * Year of practice,存tbl_doctor_year_of_practice 的 id
     */
    @Column(name = "md_yop_id")
    @ApiModelProperty("Year of practice,存tbl_doctor_year_of_practice 的 id")
    private String mdYopId;

    @Column(name = "disp_order")
    private Integer dispOrder;

    /**
     * 是否测试账号 0 否 1 时
     */
    @Column(name = "test_doctor")
    @ApiModelProperty("是否测试账号 0 否 1 时")
    private Integer testDoctor;

    /**
     * 病人档案访问权限 1:full access;2:company access;3:clinic access;4:personal access
     */
    @Column(name = "full_access")
    @ApiModelProperty("病人档案访问权限 1:full access;2:company access;3:clinic access;4:personal access")
    private Integer fullAccess;

    private String ringtone;

    /**
     * 是否允许印尼的医生给新加坡医生开的药做审核
     */
    @Column(name = "allow_approve_medication")
    @ApiModelProperty("是否允许印尼的医生给新加坡医生开的药做审核")
    private Integer allowApproveMedication;

    /**
     * 医生所在国家
     */
    @Column(name = "country_of_residence")
    @ApiModelProperty("医生所在国家")
    private String countryOfResidence;

    @Column(name = "allow_offline_consult")
    private Integer allowOfflineConsult;

    @Column(name = "allow_walk_in_services")
    private Integer allowWalkInServices;

    @Column(name = "allow_home_base_services")
    private Integer allowHomeBaseServices;

    @Column(name = "allow_prescription_for_online_consult")
    private Integer allowPrescriptionForOnlineConsult;

    @Column(name = "allow_prescription_for_in_clinic_consult")
    private Integer allowPrescriptionForInClinicConsult;

    @Column(name = "allow_text_based_services")
    private Integer allowTextBasedServices;

    @Column(name = "show_patient_in_queue")
    private Integer showPatientInQueue;

    @Column(name = "show_doctor_without_roster")
    private Integer showDoctorWithoutRoster;

    /**
     * 全部存 0，多个以,拼接;历史数据使用的|
     * 上线后统一分离表
     */
    @Column(name = "consult_patient_from")
    @ApiModelProperty("全部存 0，多个以,拼接;历史数据使用的|")
    private String consultPatientFrom;

    @Column(name = "roster_hex_color")
    private String rosterHexColor;

    /**
     * 医生端控制是否打开
     */
    @Column(name = "enable_sound")
    @ApiModelProperty("医生端控制是否打开")
    private Integer enableSound;

    /**
     * 保留
     */
    @ApiModelProperty("保留")
    private String mcr;

    /**
     * SP 医生是否可用预约系统
     */
    @Column(name = "utilise_wcappt")
    @ApiModelProperty("SP 医生是否可用预约系统")
    private Integer utiliseWcappt;

    /**
     * 最小可预约时间数，如设置 1 小时，则可预约 1 小时以后的医生时间
     */
    @Column(name = "min_block_bookable")
    @ApiModelProperty("最小可预约时间数，如设置 1 小时，则可预约 1 小时以后的医生时间")
    private Integer minBlockBookable;

    /**
     * 时间单位:1minute 2hour 3day 4month
     */
    @Column(name = "min_block_bookable_unit")
    @ApiModelProperty("时间单位:1minute 2hour 3day 4month")
    private Integer minBlockBookableUnit;

    /**
     * 最大可预约时间数，如设置 1 小时，则可预约 1 小时以内的医生时间
     */
    @Column(name = "max_block_bookable")
    @ApiModelProperty("最大可预约时间数，如设置 1 小时，则可预约 1 小时以内的医生时间")
    private Integer maxBlockBookable;

    /**
     * 时间单位:1minute 2hour 3day 4month
     */
    @Column(name = "max_block_bookable_unit")
    @ApiModelProperty("时间单位:1minute 2hour 3day 4month")
    private Integer maxBlockBookableUnit;

    /**
     * 间隔时长
     */
    @Column(name = "block_interval_minute")
    @ApiModelProperty("间隔时长")
    private Integer blockIntervalMinute;

    /**
     * 每个预约时间点的缓冲时长
     */
    @Column(name = "buffer_period_minute")
    @ApiModelProperty("每个预约时间点的缓冲时长")
    private Integer bufferPeriodMinute;

    /**
     * EAP间隔时长
     */
    @Column(name = "eap_block_interval_minute")
    @ApiModelProperty("EAP间隔时长")
    private Integer eapBlockIntervalMinute;

    /**
     * EAP每个预约时间点的缓冲时长
     */
    @Column(name = "eap_buffer_period_minute")
    @ApiModelProperty("EAP每个预约时间点的缓冲时长")
    private Integer eapBufferPeriodMinute;

    /**
     * 是否在公共假日工作
     */
    @Column(name = "work_on_holiday")
    @ApiModelProperty("是否在公共假日工作")
    private Integer workOnHoliday;

    private String professional;

    @Column(name = "salt_password")
    @ApiModelProperty("盐密码")
    private String saltPassword;
    @Column(name = "iteration_password")
    @ApiModelProperty("迭代次数密码")
    private Integer iterationPassword;
}